/**
 * ...
 * @author 
 */

package scuts.ds;

import scuts.functional.Tuples;

interface HashMap<T,U>
{
    public function set (key:T, value:U):Bool;
    public function get (key:T):Option<U>;
    
    public function remove (key:T):Option<U>;
    public function exists (key:T):Bool;
    
    public function keys ():Iterable<T>;
    public function elems ():Iterable<U>;
    public function pairs ():Iterable<Tup2<T,U>>;
    
    public function iterator ():Iterator<U>;
    public var size (getSize, null):Int;
}